﻿// Copyright (c) 2012 Mokah Nnamezie & Andrew Cooper
// Neo4Net graph database - http://neo4net.codeplex.com
//
// This file is part of Neo4Net - a .Net port of the Neo4j graph database
//
// Neo4Net is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

namespace Neo4Net.Helpers
{
    using System;
    using NUnit.Framework;

    [TestFixture]
    public class TestArgs
    {
        [Test]
        public void TestInterleavedParametersWithValuesAndNot()
        {
            string[] line = { "-host", "machine.foo.com", "-port", "1234", "-v", "-name", "othershell" };

            Args args = new Args(line);
            Assert.That(args.Get("host", null), Is.EqualTo("machine.foo.com"));
            Assert.That(args.Get("port", null), Is.EqualTo("1234"));
            Assert.That(args.GetNumber("port", null), Is.EqualTo(1234));
            Assert.That(args.Get("name", null), Is.EqualTo("othershell"));
            Assert.That(args.Has("v"), Is.True);
            Assert.That(args.Orphans.Count, Is.EqualTo(0));
        }

        [Test]
        public void TestInterleavedEqualsArgsAndSplitKeyValue()
        {
            String[] line = { "-host=localhost", "-v", "--port", "1234", "param1", "-name=Something", "param2" };
            Args args = new Args(line);
            Assert.That(args.Get("host", null), Is.EqualTo("localhost"));
            Assert.That(args.Has("v"), Is.True);
            Assert.That(args.GetNumber("port", null), Is.EqualTo(1234));
            Assert.That(args.Get("name", null), Is.EqualTo("Something"));

            Assert.That(args.Orphans.Count, Is.EqualTo(2));
            Assert.That(args.Orphans[0], Is.EqualTo("param1"));
            Assert.That(args.Orphans[1], Is.EqualTo("param2"));
        }
    }
}
